Macaulay2, version 1.14 --loading configuration for package "Topcom" from file /Users/ggsmith/Library/Application Support/Macaulay2/init-Topcom.m2 with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases, PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations i1 : KK = ZZ/101 -- pick your favorite prime o1 = KK o1 : QuotientRing i2 : all ({101, 32003, 1234567891}, i -> isPrime i) o2 = true i3 : KK = QQ o3 = QQ o3 : Ring i4 : -- polynomial rings R = KK[w,x,y,z] o4 = R o4 : PolynomialRing i5 : R2 = KK[a,b][x,y,z] o5 = R2 o5 : PolynomialRing i6 : R3 = KK[a,b] ** KK[x,y,z] -- tensor product o6 = R3 o6 : PolynomialRing i7 : describe R o7 = QQ[w..z, Degrees => {4:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1] {GRevLex => {4:1} } {Position => Up } i8 : describe R2 o8 = QQ[a, b][x..z, Degrees => {3:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1] {GRevLex => {3:1} } {Position => Up } i9 : -- more rings R4 = KK[x,y,z]/(y-x^2,z-x^3) o9 = R4 o9 : QuotientRing i10 : y*x o10 = z o10 : R4 i11 : R5 = frac R4 -- this one is a field o11 = R5 o11 : FractionField i12 : isField R5 o12 = true i13 : f = z-y*x o13 = 0 o13 : R5 i14 : use R -- but I wanted it in R1!!! o14 = R o14 : PolynomialRing i15 : f = z-y*x o15 = - x*y + z o15 : R i16 : -- IDEALS -- generators gens R o16 = {w, x, y, z} o16 : List i17 : I = monomialCurveIdeal(R,{1,2,3}) 2 2 o17 = ideal (y - x*z, x*y - w*z, x - w*y) o17 : Ideal of R i18 : I == minors(2, matrix{{R_0,R_1,R_2},{R_1,R_2,R_3}}) o18 = true i19 : S = KK[s,t]; i20 : I == ker map(S, R, {s^3, s^2*t, s*t^2, t^3}) o20 = true i21 : gens I o21 = | y2-xz xy-wz x2-wy | 1 3 o21 : Matrix R <--- R i22 : I_* 2 2 o22 = {y - x*z, x*y - w*z, x - w*y} o22 : List i23 : netList I_* +---------+ | 2 | o23 = |y - x*z | +---------+ |x*y - w*z| +---------+ | 2 | |x - w*y | +---------+ i24 : vars R o24 = | w x y z | 1 4 o24 : Matrix R <--- R i25 : gens R o25 = {w, x, y, z} o25 : List i26 : R_* o26 = {w, x, y, z} o26 : List i27 : -- Groebner bases gb I o27 = GroebnerBasis[status: done; S-pairs encountered up to degree 2] o27 : GroebnerBasis i28 : gens gb I o28 = | y2-xz xy-wz x2-wy | 1 3 o28 : Matrix R <--- R i29 : groebnerBasis I o29 = | y2-xz xy-wz x2-wy | 1 3 o29 : Matrix R <--- R i30 : -- POWERED by GB -- numerical invariants: dim, degree, hilbertSeries/Polynomial, betti, regularity dim I o30 = 2 i31 : codim I o31 = 2 i32 : degree I o32 = 3 i33 : hilbertSeries I 2 3 1 - 3T + 2T o33 = ------------- 4 (1 - T) o33 : Expression of class Divide i34 : reduceHilbert hilbertSeries I 1 + 2T o34 = -------- 2 (1 - T) o34 : Expression of class Divide i35 : -- resolution C = res I 1 3 2 o35 = R <-- R <-- R <-- 0 0 1 2 3 o35 : ChainComplex i36 : C.dd 1 3 o36 = 0 : R <------------------------- R : 1 | x2-wy xy-wz y2-xz | 3 2 1 : R <----------------- R : 2 {2} | -y z | {2} | x -y | {2} | -w x | 2 2 : R <----- 0 : 3 0 o36 : ChainComplexMap i37 : betti res I 0 1 2 o37 = total: 1 3 2 0: 1 . . 1: . 3 2 o37 : BettiTally i38 : -- primaryDecomposition and quotients J = ideal(I_0, I_1) 2 o38 = ideal (y - x*z, x*y - w*z) o38 : Ideal of R i39 : primaryDecomposition J 2 2 o39 = {ideal (y - x*z, x*y - w*z, x - w*y), ideal (z, y)} o39 : List i40 : I == J : z o40 = true i41 : A = ideal(x*z,y*w,y*z-x*w) o41 = ideal (x*z, w*y, - w*x + y*z) o41 : Ideal of R i42 : I = A + ideal(y*z) o42 = ideal (x*z, w*y, - w*x + y*z, y*z) o42 : Ideal of R i43 : J = A : I o43 = ideal (z, y, x, w) o43 : Ideal of R i44 : codim J === 4 o44 = true i45 : numgens A === 3 o45 = true i46 : --so ht(a:I) <= mu(a) can fail; --m = (a:I) is a 3-residual intersection of I of height 4 6 === (3*2) o46 = true i47 : 6 === 3*2 o47 = true i48 : 6 === 3.0 * 2 o48 = false i49 : 6 == 3.0 *2 o49 = true i50 : needsPackage "TestIdeals" o50 = TestIdeals o50 : Package i51 : R = ZZ/11[x,y,z,u,v,w] / (x*u-y*w,x*v-z*w,y*v-z*u) o51 = R o51 : QuotientRing i52 : isFPure R o52 = true i53 : methods isFPure o53 = {0 => (isFPure, Ideal)} {1 => (isFPure, Ring) } o53 : NumberedVerticalList i54 : code (isFPure, Ring) o54 = -- code for method: isFPure(Ring) /Applications/Macaulay2-1.14/share/Macaulay2/TestIdeals/testIdeals.m2:294:19-295:24: --source code: isFPure Ring := o -> R1 -> isFPure( ideal R1, o ) i55 : code (isFPure, Ideal) o55 = -- code for method: isFPure(Ideal) /Applications/Macaulay2-1.14/share/Macaulay2/TestIdeals/testIdeals.m2:297:20-317:46: --source code: isFPure Ideal := o -> I1 -> ( p1 := char ring I1; if o.IsLocal then ( maxideal := maxIdeal I1; if codim(I1) == numgens(I1) then ( L := flatten entries gens I1; not isSubset( ideal( product( L, l -> fastExponentiation( p1-1, l ) ) ), frobenius maxideal ) ) else not isSubset( frobenius( I1 ) : I1, frobenius maxideal ) ) else ( nonFPureLocus := frobeniusRoot( 1, frobenius( I1 ) : I1, FrobeniusRootStrategy => o.FrobeniusRootStrategy ); nonFPureLocus == ideal( sub( 1, ring I1 ) ) ) ) i56 : isFPure I stdio:71:1:(3): error: frobeniusMethod: expected an ideal in a ring of positive characteristic. i57 : isFPure R isFPure R o57 = true i58 : I o58 = ideal (x*z, w*y, - w*x + y*z, y*z) o58 : Ideal of QQ[w, x, y, z] i59 : I^[2] 2 2 2 2 2 2 2 2 2 2 o59 = ideal (x z , w y , - w x + y z , y z ) o59 : Ideal of QQ[w, x, y, z] i60 :